﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdministracionCooperativa.entidades;
using System.Data;

namespace AdministracionCooperativa.Controlador
{
    public class ControladorUsuario
    {
        public static long ExisteUsuario(string nombreUsuario, string pwd)
        {
            using (combisEntities bd = new combisEntities())
            {
                var resultado = (from e in bd.sysusr where e.USUARIO == nombreUsuario && e.PASS == pwd select e).FirstOrDefault();
                if (resultado != null)
                    return resultado.IDUSR;
                else
                    return -1;
            } 
        }
        public static long Guardar(sysusr usuario)
        {
            if (ExisteUsuario(usuario.USUARIO, usuario.PASS) > 0)
                return ModificarUsuario(usuario);
            else
                return CrearUsuario(usuario);
        }
        public static long Guardarusu(sysusr usuario)
        {            
                
                return ModificarUsuario(usuario);            
        }
        public static sysusr GetUsuarioById(long idUsuario)
        {
            try
            {
                using (combisEntities bd = new combisEntities())
                {
                    var usuario = bd.sysusr.SingleOrDefault(c => c.IDUSR==idUsuario);
                    return usuario; 
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            
        }


        public static List<sysusr>AllUsuarios()
        {
            using (combisEntities bd = new combisEntities())
            {
                var usuarios = (from p in bd.sysusr orderby p.NOMBRE select p).ToList();
                return usuarios;
            }
        }

        #region Procedimientos para crear, guardar, modificar y eliminar

        public static int EliminarUsuarioById(long idusr)
        {
           using (combisEntities bd = new combisEntities())
            {
            sysusr delusr = bd.sysusr.SingleOrDefault(c => c.IDUSR == idusr);
            bd.sysusr.DeleteObject(delusr);
            bd.SaveChanges();
            return 1;
           }
        }
        public static long CrearUsuario(sysusr usuario)
        {
               using (combisEntities bd = new combisEntities())
                {
                    bd.sysusr.AddObject(usuario);
                    bd.SaveChanges();
                    return usuario.IDUSR;
                }
          
        }
        protected static long ModificarUsuario(sysusr usuario)
        {
            using (combisEntities bd = new combisEntities())
            {
                sysusr usuarioviejo = bd.sysusr.SingleOrDefault(c => c.IDUSR == usuario.IDUSR);
                usuarioviejo.NOMBRE = usuario.NOMBRE;
                usuarioviejo.USUARIO = usuario.USUARIO;
                usuarioviejo.PASS = usuario.PASS;
                usuarioviejo.TIPO = usuario.TIPO;
                bd.SaveChanges();
                return usuario.IDUSR;
            }

        }
        #endregion

    }
}
